SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[pje_porParticipacionEnJurados] @idInscripcion integer, @pje float output, @resultado as integer output AS
SET NOCOUNT ON
declare  @idAgente as int,@CargoGenerico as int,@AsignaturaGenerica as int, @idTipoConvocatoria as int ,@fechaLimite as datetime,@nivel_insc as int,@ciclo as int
declare @pjeA as float,@pjeB as float, @topeJuradosA as float,@topeJuradosB as float
declare @sum as float
declare @grupoIncumbencia as int
DECLARE @Error INT

BEGIN TRANSACTION
SET @ERROR=0


select @topeJuradosA= (select valor1 from tb_parametros where idparametro=31) -- como no hay topes individuales para cada tipo, en este caso el tope se lee de la tabla de parámetros del sistema (jurados en conc. artísticos literarios deport.cientif.
select @topeJuradosB =(select valor from tb_topetiposantecedentes where rubro=4 and TipoAntecedente =82 ) -- en este caso hay un tope para el tipo de antecedente 82, entonces lo leo de la tabla que tiene los topes para cada tipo de antecedente .

select  @idAgente=i.Agente,@cargoGenerico = i.CargoGenerico,@AsignaturaGenerica=i.AsignaturaGenerica,@idtipoConvocatoria=Conv.TipoConvocatoria,@FechaLimite=Conv.FechaLimite,@nivel_insc=i.nivel,@ciclo=ciclo
	from 
	tb_inscripcionesConvocatorias i 
		join tb_Convocatorias conv on i.Convocatoria=conv.idConvocatoria 
	where i.idInscripcionConvocatoria=@idInscripcion

if @nivel_insc = 3 and @ciclo = 2 set  @nivel_insc=4

select @grupoIncumbencia=case
	when @nivel_insc = 2 then 570
	when @nivel_insc = 3 then 570
	when @nivel_insc = 4 then 571
end

--if  @idTipoConvocatoria  in (1,3,4,5,9)  --    TipoConvocatoria = 1 ingreso,interinatos y suplencias
--begin
	
		declare c cursor FORWARD_ONLY FOR
		select 
			  isnull (sum(PuntajeParaIncumbencias),0)  puntajeA --sumo todos los jurados de tipo A (tipo 24,25,26)
		from tb_antecedentes a 
			join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
			join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=a.GrupoIncumbencias
--			join tb_reluniongsgu R on r.idgrupounion = G.idGrupoIncumbencia
			join tb_incumbencias h on G.idGrupoincumbencia=h.grupoIncumbencia
    		         where a.rubro=4 and a.tipo in(24,25,26)  and agente=@idagente and h.CargoGenerico=@Cargogenerico 
			and h.AsignaturaGenerica=@AsignaturaGenerica and a.FechaPresentacion <= @FechaLimite--sumo todos los artículos que tiene el agente
			SET @Error = @@ERROR 
			IF @Error <> 0 GOTO Salir

		open c
		fetch next from c into @sum
		set @pjeA=0

		while @@FETCH_STATUS = 0
		begin
			set @pjeA=@pjeA+@sum
			fetch next from c into @sum
		end

		close c
		deallocate c

		if @pjeA > @topeJuradosA  set @pjeA=@topeJuradosA

		--print @pjeA

		declare c cursor forward_only  for
		select   isnull (sum(PuntajeParaIncumbencias),0)  puntajeB --sumo todos los jurados de tipo B
		from tb_antecedentes a 
			join tb_tiposAntecedentes t on a.tipo=t.idtipoantecedente 
			join tb_gruposDeIncumbencias G on G.idGrupoIncumbencia=a.GrupoIncumbencias
--			join tb_reluniongsgu R on r.idgrupounion = G.idGrupoIncumbencia
			join tb_incumbencias h on G.idGrupoINCUMBENCIA=h.grupoIncumbencia
    		 where a.rubro=4 and a.tipo in(82)  and agente=@idagente and h.CargoGenerico=@Cargogenerico 
		and h.AsignaturaGenerica=@AsignaturaGenerica and a.FechaPresentacion <= @FechaLimite

		open c
		fetch next from c into @sum

		set @pjeB=0

		while @@FETCH_STATUS = 0
		begin
			set @pjeB=@pjeB+@sum
			fetch next from c into @sum
		end

		close c
		deallocate c

		if @pjeB > @topeJuradosB set @pjeB=@topeJuradosB
		print @pjeB
		set @pje = @pjeB+@pjeA
		--print 'puntaje' + cast(@pje as varchar)

--end

Salir:
IF @Error <> 0 
	ROLLBACK TRANSACTION
ELSE 
	COMMIT TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[pje_porParticipacionEnJurados] TO [Juntas]
GO
